// display.h

#pragma once
#ifndef DISPLAY_H
#define DISPLAY_H

#include <string>
#include <sstream>
#include <iostream>
#include <vector>
#include "Task.h"

class Display {
private:

	static const std::string MSG_WELCOME;
	static const std::string MSG_USERPROMPT;
	static const std::string MSG_ADD_SUCCESS;
	static const std::string MSG_EDIT_SUCCESS;
	static const std::string MSG_DELETE_SUCCESS;
	static const std::string MSG_UNDO_SUCCESS;
	static const std::string MSG_REDO_SUCCESS;
	static const std::string MSG_COMPLETE_SUCCESS;

	static const std::string MSG_INVALID_CMD;
	static const std::string MSG_INVALID_LINENO;
	static const std::string MSG_INVALID_TIME;
	static const std::string MSG_INVALID_DATE;

	static const std::string MSG_NOT_FOUND;
	static const std::string MSG_EMPTY_FILE;
	static const std::string DELIMITER;
	static const int MAX_SIZE = 255;

	char buffer[MAX_SIZE];
	static const std::string _programName;

public:
	Display();
	
	void displayTasks(std::vector<Task>);

	std::string welcomeMsg();
	std::string clearFeedback();
	std::string emptyFeedback();
	std::string editFeedback(std::string);
	std::string addFeedback(std::string);
	std::string deleteFeedback(std::string);
	std::string undoFeedback();
	std::string redoFeedback();
	std::string notFoundFeedback(std::string);
	std::string invalidFeedback();
	std::string invalidTimeFeedback();
	std::string invalidDateFeedback();
	std::string completeFeedback(std::string);

	void displayUI(std::string output);

};

#endif